import os
import codecs

from PyQt4 import QtCore, QtGui, QtSvg

#=========================================================================================
class ConjuntoPiezas :
    def __init__( self, nombre ) :

        self.nombre = nombre
        self.dicPiezas = self.leePiezas( nombre )

    def leePiezas( self, nombre ) :
        try :
            dic = {}
            for pieza in "rnbqkpRNBQKP" :
                fich = os.path.join( "Pieces", nombre, "%s%s.svg"%("w" if pieza.isupper() else "b",pieza.lower()))
                f = codecs.open(fich,"r",'utf-8','ignore')
                qb = QtCore.QByteArray(f.read())
                f.close()
                dic[pieza] = qb
            return dic
        except :
            return self.leePiezas( "NikNak" )

    def render( self, pieza ) :
        return QtSvg.QSvgRenderer(self.dicPiezas[pieza])

    def widget( self, pieza ) :
        w = QtSvg.QSvgWidget()
        w.load(self.dicPiezas[pieza])
        return w

    def pixmap( self, pieza, tam=24 ) :
        pm = QtGui.QPixmap( tam,tam )
        pm.fill( QtCore.Qt.transparent )
        render = self.render(pieza)
        painter = QtGui.QPainter()
        painter.begin(pm)
        render.render( painter )
        painter.end()

        return pm

    def icono( self, pieza ) :
        icon = QtGui.QIcon(self.pixmap(pieza,32))
        return icon

    def cursor( self, pieza ) :
        return QtGui.QCursor( self.pixmap(pieza))

#=========================================================================================
class TodasPiezas :
    def __init__( self ) :
        self.dicConjuntos = {}
        # self.__defecto = self.nuevo(VarGen.configuracion.nomPiezas)

    # def porDefecto( self ) :
        # return self.__defecto

    def selecciona( self, nombre ) :
        if nombre in self.dicConjuntos :
            return self.dicConjuntos[nombre]
        else :
            return self.nuevo( nombre )

    def nuevo( self, nombre ) :
        self.dicConjuntos[nombre] = ConjuntoPiezas(nombre)
        return self.dicConjuntos[nombre]

    def icono( self, pieza, nombre ) :
        fich = os.path.join( "Pieces", nombre, "%s%s.svg"%("w" if pieza.isupper() else "b",pieza.lower()) )
        f = codecs.open(fich,"r",'utf-8','ignore')
        qb = QtCore.QByteArray(f.read())
        f.close()
        pm = QtGui.QPixmap( 32,32 )
        pm.fill( QtCore.Qt.transparent )
        render = QtSvg.QSvgRenderer(qb)
        painter = QtGui.QPainter()
        painter.begin(pm)
        render.render( painter )
        painter.end()
        icon = QtGui.QIcon(pm)
        return icon

    def iconoDefecto( self, pieza ) :
        return self.icono( pieza, "NikNak" )

#=========================================================================================

